Matching Logic Prototype v0.2
  featuring the HIMP language

MatchIMP

If you receive any errors or get stuck on any part, please contact fsl@cs.uiuc.edu.  This address will send a mail to the entire FSL team and somebody will handle your problem.  Feedback is welcome!

Additionally, you can simply create an account at https://fsl.cs.uiuc.edu/bugzilla/ and file a bug report.  The relevant people will be cc'ed.

There are a number of steps you need to go through to set up your environment for running MatchIMP.  We have gotten the environment set up on both Linux and Mac environments.

Installation Overview:
1) Install a patched version of Maude and Full Maude
2) Install Yices, Z3, and CVC3

Details:
1) Install a patched version of Maude
	a) Download Maude source code from http://maude.cs.uiuc.edu/download/ .  MatchIMP currently works only with Maude 2.4.
	b) Ensure you can compile Maude from source by following their instructions.  In particular, there are a number of third party libraries that are needed.
	c) Compile the SMTLib extension itself in the SMTLib directory.  Make sure you edit the Makefile to change the installation directory to your own; probably /usr/local/
	d) Apply the patch from the patches directory to the Maude source using "patch -p1 < maudeHook.patch".
	e) Recompile Maude 
		LIBS=-lSMT ./configure
		make
		make install
	f) Download and install Full-Maude from http://maude.cs.uiuc.edu/download/
2) Install Yices, Z3, and CVC3 (all are currently necessary)
	a) http://yices.csl.sri.com/
	b) http://research.microsoft.com/projects/z3/ (version >= 2.0 is best).  The most recent linux version is available from http://why.lri.fr/provers.en.html.  Our scripts assume the z3 executable is named z3-bin.
	c) http://www.cs.nyu.edu/acsys/cvc3/
	

Instructions for Running:

Now that all the necessary tools have been installed, you are ready to prove some things.

1) First, run the SMT server, which channels requests and responses from Maude to the SMT solvers.  
	a) cd to 'himp'
	b) run 'perl SMTServer.pl'.
2) In another terminal, you can now run MatchIMP.  
	a) cd to 'himp/heap-prover'
	b) run 'maude imp-test'.
	c) This will run all the positive (expected to pass) test cases.  Examine the imp-test.maude file to change which tests are run.  
	d) All the programs are located in the 'imp-programs' file.
	
